import java.util.Arrays;

public class test3_opt {
    private static final int LIMIT = 20000;

    public static void main(String[] args) {
        // 布尔数组，初始化所有数为素数
        boolean[] isPrime = new boolean[LIMIT + 1];
        Arrays.fill(isPrime, true);
        isPrime[0] = isPrime[1] = false; // 0 和 1 不是素数

        // 欧拉筛法生成素数
        for (int p = 2; p <= LIMIT; p++) {
            if (isPrime[p]) {
                for (int multiple = p * 2; multiple <= LIMIT; multiple += p) {
                    isPrime[multiple] = false;
                }
            }
        }

        // 打印素数，每行 5 个
        int cnt = 0;
        for (int i = 1; i <= LIMIT; i++) {
            if (isPrime[i]) {
                System.out.printf("%6d ", i);
                cnt++;
                if (cnt % 5 == 0) {
                    System.out.println();
                }
            }
        }
    }
}
